
/*

Design Pattern Automation Toolkit.
Application to create applications with emphasis on Design patterns.
And support for round trip engineering.
Copyright (C) 2004 Vineeth Neelakant. nvineeth@gmail.com

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/
using System;
using System.Collections;
using System.Drawing;

namespace DesignPatternDefinitions
{
	
	public enum AccessModifiers
	{
		Private,
		Protected,
		Public
		
	}

	public enum ClassType
	{
		Concrete,
		Abstract,
		Imported //:D
	}

	
	/// <summary>
	/// Interface that represents a class
	/// </summary>
	public interface IClass
	{
		string ComponentName{get;set;}
		string ClassName{get;set;}
		bool Abstract{get;set;}
		ClassType ClassType{get;set;}
		string AccessModifier{ get;set;}
		string ClassSummary{get;set;}
		string QualifiedClassName{get;set;}//return <componentname>.<className>
		ArrayList Methods{get;set;} //arraylist of objects that implement IMethod interface.
		ArrayList Fields{get;set;} //arrayList of objs that implement IField interface.
		ArrayList InheritedClasses{get;set;}
		ArrayList Aggregates{get;set;}
		ArrayList References{get;set;}
		ArrayList Creations{get;set;}
		Point UILocation{get;set;}
		Hashtable GetAllMetaInfo();
		string GetMetaInfo(string language);
	}
}
